草庐IT

Java Parallel Streams 关闭线程

全部标签

C#在工作线程中更新UI界面上的控件

C#的应用程序开发中,我们经常要把UI线程和工作线程分开,防止界面停止响应。  同时我们又需要在工作线程中更新UI界面上的控件,下面介绍几种常用的方法线程间操作无效界面上有一个button和一个label,  点击button会启动一个线程来更新Label的值privatevoidbutton1_Click(objectsender,EventArgse)      {        Threadthread1=newThread(newParameterizedThreadStart(UpdateLabel));        thread1.Start("更新Label");      }

go - 为什么当我在 go 中添加另一个阻塞线程时信号处理程序不起作用?

我正在尝试构建一个非常简单的TCP服务器/客户端。我希望程序在被ctrl-c中断时可以关闭连接。如果我只在主线程中发送消息或只接收消息,一切正常。这是客户端的代码。packagemainimport("fmt""os""os/signal""syscall""net""bufio""io""time")const(TIMEOUT=10)funcmain(){iflen(os.Args)2{timeout,_=time.ParseDuration(os.Args[2])}iftimeout==0{timeout=time.Duration(TIMEOUT*time.Second)}con

go - 如何判断 tcplistener 是否关闭?

在Golang中,我可以关闭一个TCPListener,但是,我无法判断一个TCPListener是否关闭。此信息可用于在程序中执行一些其他逻辑。 最佳答案 您可以在使用前拨号到套接字:_,err=net.Dial("tcp","127.0.0.1:8021")//8021isaclosedsocketiferr!=nil{panic("Error,socketnotopened")}编辑:也许这样更清楚:isOpen:=true_,err=net.Dial("tcp","127.0.0.1:8021")//8021isaclose

Go logging struct 实例化实用方法的 Goroutine 线程安全

我正在使用一个新的go服务,我有一个SetupLogger实用函数,它创建一个新的go-kit日志结构实例log.Logger。从在单独的go-routines中处理请求的代码调用此方法是否安全?packageutilsimport("fmt""github.com/go-kit/kit/log""io""os""path/filepath")//Iftheenvironment-specifieddirectoryforwritinglogfilesexists,opentheexistinglogfile//ifitalreadyexistsorcreatealogfileifno

go - 关闭具有循环依赖性的 channel

我正在尝试在Golang中实现类似mapreduce的方法。我的设计如下:Mapworker从mapper输入channel中提取项目并输出到mapper输出channel映射器输出channel然后由单个goroutine读取。这个例程维护一个以前见过的键值对的映射。如果映射器输出的下一项具有匹配键,它会将具有匹配键的新值和旧值发送到归约输入channel。reduce-input管道将两个值减少为一个键值对,并将结果提交到相同的map-outputchannel。这导致映射器输出和归约输入之间的循环依赖,我现在不知道如何发出映射器输出完成的信号(并关闭channel)。打破这种循环

multithreading - Golang 线程池调度程序的目的和顺序

我刚刚用go写完了一个简单的代理应用程序:代码从一个接口(interface)获取UDP数据包,加密数据,然后使用TCP将其发送到另一个接口(interface)。目前,我正在使用三个goroutines:一个用于接收数据,一个用于加密,一个用于发送数据。我刚刚开始尝试寻找提高代码效率和速度的方法。首先,我想为每个需要加密的数据包创建一个新的goroutine,但在阅读了以下两篇博文后,我明白这不是正确的做法:http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/http://nesv.g

http - 多线程Go for HTTP get

我在一个API中使用Go来获取我所在城市的公交车频率,但是当我尝试使HTTPGet访问许多URL时,我有点卡在了线程上。如果没有并发,程序需要超过16分钟才能完成1500个url调用以获取HTTP状态代码,我试图使用并发,但在阅读了很多帖子后我不明白goroutines是如何工作的......想法是制作一个函数并更改请求的数量,如下所示:gogetBusPostStatus(600,800)但我完全坚持...代码如下:packagemainimport("fmt""net/http""strconv""time")variint=0varconvStrstringvarmessage=

go - 如何完全关闭 glog 以运行 go 测试?

我正在为我的代码编写测试代码,并希望获得100%的代码覆盖率。这意味着测试调用glog.Fatal()的极端情况。所以我需要做的第一件事是禁用glog的任何输出,因为我没有测试glog。因此,我可以运行gotest而无需在/tmp中生成文件或向stderr发送消息。我需要的第二件事是调用os.Exit()的glog.Fatal()调用不会干扰运行测试。我怎样才能做到这一点? 最佳答案 你应该可以通过编程到glog接口(interface)来实现它。我不确定那是什么,但它可能看起来像typeLoggerinterface{Fatal(

postgresql - 如何在 Go 应用程序中处理打开/关闭 Db 连接?

我的WebAPI应用程序中有一组函数。他们对Postgres数据库中的数据执行一些操作。funcCreateUser(){db,err:=sql.Open("postgres","user=postgrespassword=passworddbname=api_devsslmode=disable")//Dosomedboperationshere}我想函数应该相互独立地与db一起工作,所以现在我在每个函数中都有sql.Open(...)。我不知道这是否是管理数据库连接的正确方法。我是否应该在应用程序启动后在某个地方打开它,并将db作为参数传递给相应的函数,而不是在每个函数中打开连接?

Golang 程序在写入完成前关闭文件

我已经为我的云程序实现了自定义写入接口(interface)。到目前为止,我的问题是,在我完成将文件复制到编写器并关闭编写器后,编写器仍然有一些写入要做(通常可能4次写入,每次大约4096字节)。最后一次写入通常小于4096。这还没有发生,但我知道最后一次写入是4096字节并且我的程序不会终止的概率是1/4096。我将它用于压缩程序,io.EOF无效,因为每个写入block都有一个,同时检查写入器是否关闭来得太早,因为仍有一些写入要做。处理这种情况的最佳方法是什么?***编辑*****我最终实现了一个更健壮的Write()、Flush()和Close()方法。现在如果我使用deferC